﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Globalization;

namespace VietNamKey
{
    public partial class ucUnicodeEx : UserControl
    {
        public ucUnicodeEx()
        {
            InitializeComponent();
        }

        static string EncodeNonAsciiCharacters(string value)
        {
            StringBuilder sb = new StringBuilder();
            foreach (char c in value)
            {
                if (c > 127)
                {
                    // This character is too big for ASCII
                    string encodedValue = "\\u" + ((int)c).ToString("x4");
                    sb.Append(encodedValue);
                }
                else
                {
                    sb.Append(c);
                }
            }
            return sb.ToString();
        }

        static string DecodeEncodedNonAsciiCharacters(string value)
        {
            return Regex.Replace(
                value,
                @"\\u(?<Value>[a-zA-Z0-9]{4})",
                m =>
                {
                    return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
                });
        }

        private void btnUnicodeToEscapedAscii_Click(object sender, EventArgs e)
        {
            try
            {
                var text = Clipboard.GetText(TextDataFormat.UnicodeText);
                text = EncodeNonAsciiCharacters(text);
                Clipboard.SetText(text, TextDataFormat.UnicodeText);
                MessageBox.Show("Chuyển đổi thành công!");
            }
            catch
            {
                MessageBox.Show("Có lỗi, không chuyển đổi được!");
            }
        }

        private void btnEscapedAsciiToUnicode_Click(object sender, EventArgs e)
        {
            try
            {
                var text = Clipboard.GetText(TextDataFormat.UnicodeText);
                text = DecodeEncodedNonAsciiCharacters(text);
                Clipboard.SetText(text, TextDataFormat.UnicodeText);
                MessageBox.Show("Chuyển đổi thành công!");
            }
            catch
            {
                MessageBox.Show("Có lỗi, không chuyển đổi được!");
            }
        }

        private void btnHide_Click(object sender, EventArgs e)
        {
            Visible = false;
        }
    }
}
